# 给定一个 n × n 的二维矩阵表示一个图像。
#
# 将图像顺时针旋转 90 度。
#
# 说明：
#
# 你必须在原地旋转图像，这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。
#
# 示例 1:
#
# 给定 matrix =
# [
#   [1,2,3],
#   [4,5,6],
#   [7,8,9]
# ],
#
# 原地旋转输入矩阵，使其变为:
# [
#   [7,4,1],
#   [8,5,2],
#   [9,6,3]
# ]
# 示例 2:
#
# 给定 matrix =
# [
#   [ 5, 1, 9,11],
#   [ 2, 4, 8,10],
#   [13, 3, 6, 7],
#   [15,14,12,16]
# ],
#
# 原地旋转输入矩阵，使其变为:
# [
#   [15,13, 2, 5],
#   [14, 3, 4, 1],
#   [12, 6, 8, 9],
#   [16, 7,10,11]
# ]

from tools import *

@exectime(1000000)
def rotate(matrix):
    """
    Do not return anything, modify matrix in-place instead.
    """
    n = len(matrix)
    for y in range(n // 2): # 几层
        for x in range(y, n-y-1): # 每条边的数据
            m = n - 1
            matrix[y][x], matrix[x][m-y], matrix[m-y][m-x], matrix[m-x][y] = matrix[m-x][y], matrix[y][x], matrix[x][m-y], matrix[m-y][m-x]

    # if not matrix: return
    # matrix.reverse()
    # for i in range(len(matrix)):
    #     for j in range(i):
    #         matrix[i][j], matrix[j][i] = matrix[j][i], matrix[i][j]


matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

[[7, 8, 9],
 [4, 5, 6],
 [1, 2, 3]]

matrix.reverse()
# rotate(matrix)

print(matrix)
